The invention pertains to the post-silicon adjustment of clock edge rise/fall times, particularly when the adjustment of said rise/fall times tends to influence a deadtime between non-overlapping clock signals and thereby eliminate a race.
Many if not most of the integrated circuits which are being produced today comprise some number of clocked logic gates. A clocked logic gate is one which performs its function subsequent to the assertion (or deasertion) of a clock signal.
For example, some logic gates (e.g., some static logic gates) receive a clocked enable signal and cannot perform their intended functions until the enable signal is asserted. Such a clock enabled logic gate 100 is illustrated in FIG. 1.
Other logic gates (e.g., some dynamic logic gates) are alternately precharged and enabled by a clock signal, and can only perform their intended functions during the enable phase of the clock signal. A precharged logic gate 200 is illustrated in FIG. 2 and comprises a precharger 202, a logic block 204 for evaluating a desired logic function, and an inverting buffer 206.
Clocked logic gates 100, 200 are often interdependent on one another. For example, FIG. 3 illustrates a logic pipeline 300 in which data is alternately clocked through stages 304, 308, 312 of the pipeline 300. FIG. 4 illustrates two bodies of logic 402, 404 that generate data which is then combined in a later logic stage 406 (e.g., the two bodies of logic 402, 404 might respectively generate two addends which are input to an adder 406).
In each of the scenarios presented in FIGS. 3 and 4, the interdependence of the clocked logic gates requires an orderly and timely progression of data. Absent an orderly and timely progression of data through the logic pipeline 300 which is illustrated in FIG. 3, or the logic junction 400 which is illustrated in FIG. 4, data flowing through clocked logic gates 100, 200 is likely to be corrupted.
Typically, the orderly and timely progression of data through clocked logic gates 100, 200 is regulated by a pair of out-of-phase clocks. For example, the first of the clocks might cause data to propagate through odd logic stages 304, 312 of a pipeline 300 at multiples of time T, and the second of the clocks might cause data to propagate through even logic stages 308 of the pipeline 300 at multiples of time T+X, where X is not a multiple of T.
Theoretically, clocked logic gates 100, 200 should be able to be clocked with two clocks which are exactly 180xc2x0 out-of-phase (e.g., clocks CK1 and CK2 in FIG. 5). However, real world conditions such as wire resistance, switching time, capacitance, clock skew, and clock edge degradation often prohibit the alternate clocking of sequential, clocked logic blocks 402, 406 (or logic stages 304, 308, 310) with 180xc2x0 out-of-phase clocks. The problem with such a clocking scheme is that in many situations, a xe2x80x9cracexe2x80x9d is possible as soon as pulses of the two clocks start to overlap. A race is a condition in which data tends to propagate through more than one sequential, clocked logic block 402, 406 during a single clock period. Oftentimes, a race occurs as a result of data propagating through two or more sequential memory elements 302, 306, 310 during a single clock period.
Races may take a variety of forms, depending upon the configuration of the clocked logic blocks 100, 200 involved. For example, refer to the logic pipeline 300 illustrated in FIG. 3. If clock CK2N is not de-asserted prior to the assertion of clock signal CK1N, data being processed in LOGIC STAGE_1 can race through LATCH 1 and corrupt necessary data which has yet to be output from LOGIC STAGE_2. With respect to FIG. 4, a race can occur, for example, if new data propagates through LOGIC BLOCK_2 and overwrites the value of DATA_2 prior to the previous and required value of DATA_2 being consumed by LOGIC BLOCK_3.
From the above examples, one can see that when upstream data wins a race and catches up with downstream data, it is very likely that the downstream data will be corrupted. Race prevention is therefore critical to the effective operation of clocked logic gates 100, 200.
One way to prevent races is by alternately clocking sequential, clocked logic blocks 402, 406 with a pair of non-overlapping clocks. Such a pair of non-overlapping clocks is illustrated in FIG. 5 as clocks CK1N and CK2N. Note that between the pulses of each clock there is a xe2x80x9cdeadtimexe2x80x9d during which neither of the clocks is asserted. A first deadtime 502 lies between the falling edge 520 of clock CK1N and the rising edge 516 of clock CK2N, and a second deadtime 500 lies between the falling edge 522 of clock CK2N, and the rising edge 512 of clock CK1N. Since deadtimes 500, 502 are times in which little or no useful work is done, it is important to adjust the deadtimes between non-overlapping clocks so that they are just long enough to prevent races from occurring, but no longer.
One way to produce out-of-phase clocks such as CK1, CK2, CK1N and CK2N (FIG. 5) is via a system 600 of clock gaters 602, 604, 606, 608 (FIG. 6). A clock gater 602, 604, 606, 608 is merely a circuit which receives a first clock signal and outputs a second clock signal, which second clock signal is out-of-phase with the first clock signal in one or more ways. For example, the pulses of the second clock signal may have rising and/or falling edges which are out-of-phase with the rising and falling edges of the first clock signal, or the pulses of the second clock signal may be of shorter or longer duration than those of the first clock signal.
A number of exemplary clock gater circuits are disclosed in U.S. Pat. No. 5,124,572 of Mason et al. entitled xe2x80x9cVLSI Clocking System Using Both Overlapping and Non-overlapping Clocksxe2x80x9d, U.S. Pat. 5,306,962 of Lamb entitled xe2x80x9cQualified Non-Overlapping Clock Generator to Provide Control Lines with Non-Overlapping Clock Timingxe2x80x9d, U.S. Pat. No. 5,726,596 of Perez entitled xe2x80x9cHigh-Performance, Low-Skew Clocking Scheme for Single-Phase, High-Frequency Global VLSI Processor Clocksxe2x80x9d, U.S. Pat. No. 5,760,610 of Naffziger entitled xe2x80x9cQualified Universal Clock Buffer Circuit for Generating High Gain, Low Skew Local Clock Signalsxe2x80x9d, and the copending U.S. patent application of Radjassamy entitled xe2x80x9cMethods and Apparatus for Adjusting the Deadtime Between Non-overlapping Clock Signalsxe2x80x9d (Docket No. HP10004258-1). These patents are hereby incorporated by reference for all that they disclose.
The patents of Mason et al. and Lamb disclose a clocking methodology for VLSI circuits which selectively uses the edges of two overlapping clocks and two non-overlapping clocks to eliminate race conditions. The overlapping clocks are used wherever possible to provide superior timing advantages, while the non-overlapping clocks are used to eliminate race conditions as data propagates down a pipeline of transparent registers. The patents of Perez and Naffziger disclose various improvements to the clocking methodologies disclosed in Mason et al. and Lamb.
The patent application of Radjassamy discloses methods and apparatus for easily adjusting the deadtime between non-overlapping clock signals. However, the methods and apparatus disclosed by Radjassamy are particularly suited to pre-silicon deadtime adjustment and race prevention. Pre-silicon is defined herein as that period which is prior to the fabrication of an actual integrated circuit (i.e., the period during which a circuit only exists on paper and/or in simulated environments). Unfortunately, pre-silicon efforts to adjust deadtimes and eliminate races do not always translate to the elimination of races post-silicon (i.e., in an integrated circuit). This is because it is impossible to manufacture an ideal integrated circuit. For example, real world conditions of manufacturing processes often lead to transistor channel widths (and lengths) varying from one part of a channel to another; impurity dopings which vary; sizes and spacings of n-wells and p-wells which vary; and so on. Even when the existence of a manufacturing variance is known, it is sometimes impractical to model the variance pre-silicon. In fact, even ideal conditions cannot always be adequately modeled pre-silicon (e.g., the capacitive contribution of all wire routes in an integrated circuit).
As a result of the above unknowns, some races can only be identified post-silicon. Since a circuit redesign is often costly (or even cost prohibitive) at the post-silicon stage, better and cheaper methods for adjusting the deadtime between non-overlapping clock signals xe2x80x9cpost-siliconxe2x80x9d, and for eliminating races xe2x80x9cpost-siliconxe2x80x9d, are needed.
In accordance with the invention, post-silicon methods for adjusting the rise/fall times of clock edges are disclosed herein. The methods are particularly useful for adjusting the deadtimes between non-overlapping clock signals to thereby eliminate races. However, the methods may also be used to adjust the widths of clock pulses, or to otherwise synchronize or time the relationship between two or more clock edges.
A first method is designed to eliminate races and commences with the testing of an integrated circuit for races. If a clock signal which is produced by the integrated circuit is deemed to be a cause of races, at least one transistor region is clipped from an output driver of a clock gater which produces the clock signal. The clipping is performed by reconstructing at least one mask which is used to define the output driver during fabrication of the integrated circuit.
As is well known in the art, a large transistor which appears in a circuit schematic is often constructed by laying out a number of smaller transistor regions in silicon, and then coupling the transistor regions in parallel to form a transistor having the size or strength which is specified in the circuit schematic. Clipping, as the term is used herein, refers to the process of decoupling one or more of these transistor regions so as to reduce the size or strength of a transistor. Although clipping may be performed in a variety of ways, two preferred ways are 1) by fibing a mask which is used to define a transistor region in silicon, or by fibing a mask which is used to couple a transistor region into a larger circuit (i.e., an output driver), or 2) by modifying artwork which is used as a basis for constructing one of the above masks. xe2x80x9cFibingxe2x80x9d is a process wherein a focused ion beam (fib) is used to add or remove material to a mask.
A second method is designed to increase the rise/fall time of clock edges in an integrated circuit, thereby providing a means for eliminating races, a means for otherwise adjusting non-overlapping clock signal deadtimes, or a means for adjusting clock pulse widths. The method commences with the identification of a clock signal which has a clock edge with a poor (or inadequate) rise/fall time. When a circuit is designed and/or simulated, clock edges are presumed to transition in a square wave fashion, or with a predefined skew. In the real world, clock edges never transition in a square wave fashion, and edge skew may be more or less than that which was presumed for the purpose of a simulation. Real world clock edges which are skewed to a greater or lesser degree than that which was considered during simulation are therefore defined herein as having a poor rise/fall time. In addition, other factors may lead to a clock edge""s rise or fall time being considered poor or inadequate (collectively referred to herein as xe2x80x9cpoorxe2x80x9d). For example, a clock edge may have the amount of skew which it was expected to have pre-silicon, but a manufacturing variance may cause the edge to begin rising or falling at a time which is different than expected. As a result, the timing of a clock edge""s rise/fall, in combination with a fast clock edge rise or rail, may lead to the clock edge""s rise/fall time being considered poor even though the edge""s rise/fall time would have been acceptable had the edge started to rise or fall at the time which was proposed pre-silicon. In any result, a clock edge which is considered to have a poor rise/fall time can be corrected, in accordance with the invention, by clipping at least one transistor region from an output driver of a clock gater which produces the clock signal. The clipping is performed by reconstructing at least one mask which is used to define the output driver during fabrication of the integrated circuit.
These and other important advantages and objectives of the present invention will be further explained in, or will become apparent from, the accompanying description, drawings and claims.